package four.server;

import four.util.Constants;
import three.HandlerSocketThreadPool;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Lei
 * @create 2022-07-14 16:57
 */
public class ServerChat {

    /** 定义一个集合存放所有在线的socket，放到当前的map里面来进行保存  */
    public static Map<Socket, String> onLineSockets = new HashMap<>();

    public static void main(String[] args) {
        try {
            /** 1.注册端口   */
            ServerSocket serverSocket = new ServerSocket(Constants.PORT);
            HandlerSocketThreadPool handlerSocketThreadPool = new HandlerSocketThreadPool(3, 10);

            /** 2.循环一直等待所有可能的客户端连接 */
            while(true){
                Socket socket = serverSocket.accept();
                /**3. 把客户端的socket管道单独配置一个线程来处理 */
                //使用线程池来进行完成对每一个socket的发送
                handlerSocketThreadPool.execute(new ServerReader(socket));
//                new ServerReader(socket).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}